import org.springframework.ai.document.Document;

import org.sz.MySQLDocumentReader;
import org.sz.MySQLResource;

import java.util.Arrays;
import java.util.List;

public class DocumentReaderDemo {
    public static void main(String[] args) {
        // 1. 配置MySQL资源
        MySQLResource resource = new MySQLResource(
            "localhost", 3306, "knowledge_db", "user", "password",
            "SELECT id, title, content, author, create_time FROM articles",
            Arrays.asList("title", "content"),
            Arrays.asList("id", "author", "create_time")
        );
        
        // 2. 配置连接池参数
        resource.setMaximumPoolSize(20);         // 最大连接数
        resource.setMinimumIdle(5);              // 最小空闲连接数
        resource.addConnectionProperty("useSSL", "false"); // 禁用SSL
        resource.addConnectionProperty("serverTimezone", "Asia/Shanghai"); // 设置时区
        
        // 3. 使用读取器（try-with-resources确保资源关闭）
        try (MySQLDocumentReader reader = new MySQLDocumentReader(resource)) {
            // 设置批处理大小
            reader.setFetchSize(1000);
            
            // 方式一：同步读取
            List<Document> documents = reader.get();
            System.out.println("同步读取文档数: " + documents.size());
            
            // 方式二：流式处理（适合大数据集）
            reader.streamDocuments(doc -> {
                System.out.println("文档标题: " + doc.getMetadata().get("title"));
            });
            
            // 方式三：异步读取
            reader.getAsync().thenAccept(docs -> {
                System.out.println("异步读取文档数: " + docs.size());
            }).join(); // 等待异步任务完成（仅示例，实际使用中可按需处理）
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}